home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / BASIC / 0007.ZIP / LORES.DOC < prev    next >
Text File  |  1984-03-21  |  16KB  |  424 lines

  1.  
  2.  
  3.  
  4.  *********************************************************************
  5.  *      IBM PC LOW RESOLUTION COLOR MODE INTERFACE ROUTINES         *
  6.  *********************************************************************
  7.  
  8. THE 'UNSUPPORTED' 160X100X16 COLOR MODE OF THE IBM COLOR GRAPHICS CARD
  9. MAY BE LOW RESOLUTION, BUT IT IS QUITE COLORFUL. IN ORDER TO USE THIS
  10. MODE FROM INTERPRETED AND COMPILED BASIC YOU NEED A CORE OF GRAPHICS
  11. PRIMITIVES THAT WILL ENABLE YOU TO DRAW DOTS, LINES, BOXES AND CIRCLES
  12. IN SIXTEEN COLORS. PRINTING TEXT ON THIS SCREEN WOULD ALSO BE NICE. THE
  13. SERIES OF FILES DESCRIBED BELOW WILL ALLOW YOU TO DO THIS, AND MORE.
  14.  
  15. IF YOU WOULD LIKE TO GET A COPY OF ALL THE LATEST LORES ROUTINES, AND
  16. PRINTED DOCUMENTATION, SEND $5.00 AND A DISK OR JUST $10.00 TO:
  17.  
  18.                   MARTY SMITH
  19.              310 CINNAMON OAK LANE
  20.                HOUSTON, TX    77079
  21.  
  22. GETTING STARTED:
  23.  
  24. IN ADDITION TO THIS DOCUMENTATION, THERE ARE SEVERAL FILES THAT MAKE UP
  25. THE PACKAGE.
  26.  
  27.     (1) LORES.USR    -  THE BLOADABLE MODULE FOR INTERPRETED BASIC.
  28.  
  29.     (2) LORES.OBJ    -  AN OBJECT MODULE FOR COMPILED BASIC.
  30.  
  31.         THESE TWO FILES MAY NEED TO CREATED FROM .HEX FILES.
  32.         IF YOU SEE FILENAMES OF LOUSR.HEX/LOOBJ.HEX THIS
  33.         IS THE CASE. CONVERT LOUSR.HEX TO LORES.USR, LOOBJ.HEX
  34.         TO LORES.OBJ.
  35.  
  36.     (3) LODEMO.BAS    -  A BASIC PROGRAM USING ALL THE LORES FEATURES.
  37.  
  38.     (4) LORES.ASM    -  THE ASSEMBLER SOURCE FOR THE ROUTINES.
  39.                THE TWO MODULES BOTH COME FROM THIS FILE.
  40.  
  41.     (5) LODEMO.EXE    -  THE COMPILED VERSION OF LODEMO.BAS
  42.  
  43.     (6) LORES.EXE    -  THE ORIGINAL ASSEMBLER DEMO OF LORES MODE.
  44.  
  45.     (7) READ.ME    -  THIS FILE.
  46.  
  47. TO RUN THE BASIC PROGRAM, YOU NEED LORES.USR IN ADDITION TO LODEMO.BAS,
  48. PREFERABLY BOTH ON THE DEFAULT DRIVE.  IF THIS IS NOT SO, THE PROGRAM
  49. WILL ASK FOR THE FILENAME.  THE BEST WAY TO GET STARTED IS TO RUN
  50. LODEMO.BAS.  AFTERWARDS YOU MAY WANT TO LIST THIS FILE TO SEE HOW THE
  51. ROUTINES WORK.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.      LORES INTERFACE ROUTINES - 3/14/84  - PAGE 1
  62.  
  63.  
  64.  
  65. MEMORY, AND LOADING USR MODULES:
  66.  
  67. IF YOU KNOW ALL ABOUT RESERVING MEMORY FOR BASIC ASSEMBLER ROUTINES YOU
  68. DON'T NEED TO READ THIS SECTION, JUST THIS PARAGRAPH. THE LORES MODULE
  69. FOR INTERPRETED BASIC IS CALLED LORES.USR, 2406 BYTES IN SIZE AND IS
  70. TOTALLY SELF-CONTAINED.  IT USES THE BASIC STACK, AND DATA SEGMENT, AND
  71. ADDRESSES MEMORY DIRECTLY ON THE COLOR CARD.  FOR COMPILED BASIC,
  72. LORES.OBJ NEEDS TO BE LINKED TO YOUR PROGRAM.  LORES.OBJ IS IDENTICAL TO
  73. LORES.USR EXCEPT FOR FORMAT AND METHOD OF HANDLING BASIC STRINGS, WHICH
  74. CAN BE 32767 CHARACTERS IN COMPILED BASIC.
  75.  
  76. WITH DOS 2.+ ALLOCATING MEMORY FOR MACHINE ROUTINES BECOMES A LITTLE
  77. MORE COMPLICATED.  WITH DOS 1.1 YOU PRETTY MUCH KNEW WHERE BASIC WOULD
  78. BE AND COULD COME UP WITH GENERAL PURPOSE ADDRESSES FOR MACHINE ROU-
  79. TINES.    WITH DEVICE DRIVERS FOR RAM DISKS AND THE LIKE, BASIC MAY BE
  80. LOADED ANYWHERE.  LUCKILY THERE IS HOPE.  AT LOCATION HEX 510 IN SEGMENT
  81. 0 BASIC STORES THE SEGMENT ADDRESS WHERE IT IS LOCATED.  IF YOU HAVE
  82. PLENTY OF MEMORY, I.E. MORE THAN 110,000 BYTES FREE AFTER DOS AND DEVICE
  83. DRIVERS, ALL YOU NEED TO DO FOR A VALUE FOR LORES'S SEGMENT IS:
  84.  
  85. 10    ' SETUP TO BLOAD LORES.USR - PLENTY OF MEMORY, ANY DOS.
  86.     DEF SEG=0 : X=PEEK(&H510) + 256*PEEK(&H511) ' BASIC SEGMENT
  87.     LOSEG% = X + &H1001 ' ADD 64K + BREATHING ROOM.
  88.     DEF SEG=LOSEG%        ' POINT BASIC TO IT.
  89.     BLOAD "LORES.USR",0 ' LOAD ROUTINE.
  90.     DEF SEG         ' POINT BACK TO BASIC.
  91.  
  92. LOSEG% NOW HAS THE SEGMENT VALUE RIGHT ON TOP OF BASIC, WHEREVER BASIC
  93. IS.  YOU CAN'T POKE OR BLOAD LORES.USR INTO AN ARRAY.  IN ADDITION TO
  94. BEING INCONVENIENT, THIS METHOD WON'T WORK AS LORES HAS A FEW INTERNAL
  95. VARIABLES AND THESE ARE STORED AT RELATIVE OFFSETS TO ZERO.  IN AN ARRAY
  96. THESE OFFSETS WILL END UP IN THE BASIC WORKAREA, WITH UNPREDICTABLE
  97. RESULTS.
  98.  
  99. IF YOU HAVE LESS THAN 110,000 BYTES FREE, BASIC WILL HAVE SET ITS STACK
  100. AND TOP OF STRING SPACE TO THE TOP OF MEMORY IN YOUR MACHINE.  THIS
  101. REQUIRES THAT YOU TELL BASIC NOT TO USE ALL THIS MEMORY IN ORDER TO
  102. LEAVE SPACE FOR LORES.    THE FOLLOWING CODE WILL DO THE TRICK.  THIS
  103. *MUST* BE DONE BEFORE ANYTHING BUT REM STATEMENTS IN YOUR PROGRAM:
  104.  
  105. 10    ' GENERAL ROUTINE TO LOAD LORES, ACCOUNTS FOR LOW MEMORY.
  106.     DEF SEG=0 : X=PEEK(&H510) + 256*PEEK(&H511) ' SAME AS ABOVE
  107.     Y = PEEK(&H413) + 256*PEEK(&H414)  ' MEMORY SIZE IN K'S.
  108.     Y = Y*64    ' ADJUST MEMORY SIZE TO SEGMENT PARAGRAPHS.
  109.     Z = Y - X   ' TOP OF MEMORY - BASIC SEGMENT = TOTAL AVAILABLE.
  110.     Z = Z - 152 ' LORES IS ABOUT 151 PARAGRAPHS LONG. 2406 BYTES.
  111.     Z = Z*16    ' MEMORY AVAILABLE FOR BASIC IN BYTES.
  112.     IF Z < 65536! THEN CLEAR ,Z,2048 ELSE CLEAR ,,2048
  113.     ' AFTER THIS X, Y AND Z HAVE BEEN CLEARED TO ZERO, SO
  114.     DEF SEG=0 : X = PEEK(&H510) + 256*PEEK(&H511)
  115.     Y=(PEEK(&H413) + 256*PEEK(&H414)) * 64
  116.     Z = Y - X
  117.     IF Z < 4096 THEN LOSEG% = X + Z - 150 ELSE LOSEG%= X + 4097
  118.     DEF SEG=LOSEG% : BLOAD "LORES.USR",0 : DEF SEG
  119.  
  120.  
  121.  
  122.           LORES INTERFACE ROUTINES - 3/14/84  - PAGE 2
  123.  
  124.  
  125.  
  126. LOADING LORES.OBJ INTO COMPILED BASIC:
  127.  
  128. IT IS MUCH EASIER TO COMPILE LORES PROGRAMS THAN TO BLOAD A MODULE.  THE
  129. ONLY CHANGE FROM INTERPRETED VERSIONS TO COMPILED IS TO DELETE OR COM-
  130. MENT OUT THE LINES THAT LOAD THE USR MODULE, SUCH AS THOSE DESCRIBED
  131. ABOVE. THE DEF SEG'S IN CALL'S CAN BE LEFT IN SINCE THEY DON'T AFFECT
  132. CALL. AFTER YOU DO THIS, COMPILING A LORES PROGRAM IS DONE WITH,
  133.  
  134.     BASCOM YOURPROG\WHATEVER;
  135.     LINK YOURPROG+LORES;
  136.  
  137. FORMAT OF COMMANDS:
  138.  
  139. ALL THE LORES ROUTINES ARE CALLED FROM BASIC THE SAME WAY.  THIS FORMAT IS:
  140.  
  141.     DEF SEG=LOSEG%
  142.     CALL LORES%(ROUTINE%,ARRAY%(0))
  143.     DEF SEG
  144.  
  145. ARRAY% IS A SIX ELEMENT INTEGER ARRAY WHERE PARAMETERS FOR THE CALL ARE
  146. STORED.  SET UP ARRAY% BY DIM ARRAY%(5). LOSEG% IS THE SEGMENT WHERE THE
  147. LORES MODULE HAS BEEN BLOADED, ROUTINE% IS THE NUMBER OF THE DESIRED
  148. FUNCTION (SEE BELOW), AND LORES% IS AN INTEGER WHOSE VALUE IS *ALWAYS*
  149. ZERO.
  150.  
  151. COMMAND EXAMPLES:
  152.  
  153. FOR EXAMPLE, SAY YOU WANT TO DRAW A LINE FROM (10,20)-(120,60) IN RED.
  154. TO DO THIS YOU WOULD TYPE:
  155.  
  156. 100    ' DRAW A LINE. A(0)-A(3) ARE SCREEN COORDINATES,
  157.     ARRAY%(0)= 10: ARRAY%(1)= 20: ARRAY%(2)= 120: ARRAY%(3)= 60
  158.     ARRAY%(4)=  4: ARRAY%(5)=  0 ' 4=RED, 0=WHOLE LINES.
  159.     ROUTINE%= 4  ' 4=LINE ROUTINE.
  160.     DEF SEG= LOSEG% : CALL LORES%(ROUTINE%,ARRAY%(0)) : DEF SEG
  161.  
  162. IN THE CASE OF THE LINE FUNCTION, ARRAY%(5) SHOULD BE ZERO TO DRAW THE
  163. WHOLE LINE, OR SOME OTHER NUMBER TO DRAW PART OF THE LINE.  IF YOU WANT
  164. TO XOR THE LINE, SET THE COLOR TO ARRAY%(4)=ARRAY%(4) OR &H80. XORING A
  165. LINE TWICE ERASES IT WITHOUT DESTROYING PREVIOUS MATERIAL.
  166.  
  167. TO DRAW A CIRCLE IN THE MIDDLE OF THE SCREEN WITH A RADIUS OF 40 IN
  168. YELLOW, AND AN ASPECT RATIO FOR A NORMAL CIRCLE:
  169.  
  170. 200    ' DRAW A CIRCLE.
  171.     ARRAY%(0)= 80: ARRAY%(1)= 50: ARRAY%(2)= 40 ' X,Y,RADIUS
  172.     ARRAY%(3)= 5: ARRAY%(4)= 6 ' ASPECT RATIO. NUMER/DENOM
  173.     ARRAY%(5)= 14 : ROUTINE%=6 ' COLOR YELLOW, 6=CIRCLE
  174.     GOSUB 1000
  175.     GOTO 300
  176.     ...
  177.     ...
  178. 1000    DEF SEG= LOSEG% : CALL LORES%(ROUTINE%,ARRAY%(0)) : DEF SEG
  179. 1010    RETURN
  180.  
  181.  
  182.  
  183.           LORES INTERFACE ROUTINES - 3/14/84  - PAGE 3
  184. EXAMPLES, CONT.
  185.  
  186.  
  187. NOW SAY YOU WANT TO PAINT THIS CIRCLE IN LIGHT RED,
  188.  
  189.     ' PAINT AN AREA, 12=LIGHT RED (FILL), 14=YELLOW (BOUNDARY)
  190. 300    ROUTINE%= 16: ARRAY%(2)= 12: ARRAY%(3)= 14 : GOSUB 1000
  191.  
  192. A(2) IS THE FILL COLOR, A(3) IS THE BOUNDARY COLOR. WHAT HAPPENED TO
  193. A(0) AND A(1)? IN THIS CASE THESE WERE NOT NEEDED. LORES DOES NOT CHANGE
  194. ARRAY VALUES EXCEPT TO RETURN A VALUE. SINCE WE JUST GOT THROUGH DRAW-
  195. ING THE CIRCLE, THE SCREEN COORDINATES ARE STILL X=160, Y=80 WHICH IS
  196. FINE FOR PAINT. ORDINARILY YOU WOULD SET THE X AND Y VALUES. PAINT WITH
  197. SIXTEEN COLORS CAN TURN INTO A CLEAR SCREEN FUNCTION PRETTY EASILY.
  198.  
  199. YOU ARE ENCOURAGED TO EXPERIMENT WITH THESE ROUTINES. THE CORE OF LORES
  200. IS THE PLOT A DOT FUNCTION, WHICH IS RANGE CHECKED AND WON'T DO ANYTHING
  201. BAD IF IT IS PASSED A VALUE OUT OF RANGE.  THIS MEANS THAT CIRCLES AND
  202. LINES AND BOXES LARGER THAN SCREEN SIZE CAN BE CREATED WITHOUT WORRYING
  203. THAT ODDBALL VALUES ARE BEING STASHED IN MEMORY SOMEWHERE.  IF YOU SET
  204. UP A SITUATION WHERE A CIRCLE WITH A RADIUS OF ZERO IS SPECIFIED, THE
  205. CALL WILL SIMPLY RETURN WITHOUT DOING ANYTHING, AS IT SHOULD.
  206.  
  207. REMEMBER THAT THE ARRAY PASSED TO LORES IS AN INTEGER ARRAY. YOU CAN
  208. MAKE SURE OF THIS BY SPECIFYING DEF INT A-Z EARLY IN YOUR PROGRAM, AS
  209. THE LODEMO PROGRAM DOES, OR ATTACH A PERCENT SIGN (%) TO ALL VALUES IN
  210. THE CALL LORES%(ROUTINE%,ARRAY%(0)).  USING DEFAULT SINGLE PRECISION
  211. VALUES WILL NOT DO ANYTHING WORTHWHILE IN LORES AND WILL PRODUCE RESULTS
  212. YOU PROBABLY DIDN'T HAVE IN MIND.
  213.  
  214. EQUIPMENT REQUIRED:
  215.  
  216. LORES OF COURSE NEEDS A COLOR GRAPHICS ADAPTOR.  A FURTHER NEED IS AN
  217. RGB MONITOR.  LORES IS A VARIATION ON 80 COLUMN COLOR, AND HAS THE SAME
  218. PROBLEM THIS MODE HAS WITH TV'S AND MOST MONITORS, I.E. GRAY SCALE OR
  219. WORSE INSTEAD OF COLOR.
  220.  
  221. THERE IS NO REAL NEED FOR EXTENSIVE MEMORY, BUT FOR CONVENIENCE AT LEAST
  222. 128K IS REQUIRED.  A COMPILED PROGRAM USING LORES.OBJ COULD CONCEIVABLY
  223. RUN IN 64K. IF YOU DON'T GET THE FULL 60K OF WORKSPACE WHEN YOU ENTER
  224. BASIC, YOU NEED TO RESERVE MEMORY FOR LORES.  SEE BELOW FOR DETAILS.
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.           LORES INTERFACE ROUTINES - 3/14/84  - PAGE 4
  243.  
  244.  
  245.  
  246. LORES ROUTINES:
  247.  
  248. THESE ARE THE LORES ROUTINES, UNNEEDED ARRAY VALUES CAN BE ANY VALUE.
  249.  
  250. ROUTINE:
  251.     ARRAY%(0),ARRAY%(1),ARRAY%(2),ARRAY%(3),ARRAY%(4),ARRAY%(5)
  252. ------- ---------------------------------------------------------------
  253. 0  = INITIALIZE.
  254.     NO VALUES ARE NEEDED, JUST A DUMMY VALUE. VIDEO MODE STORED.
  255. 1  = CLEAR SCREEN.
  256.     COLOR (0-15).
  257. 2  = PLOT A DOT.
  258.     X(0-159), Y (0-99), COLOR.
  259. 3  = GET A DOT.
  260.     X(0-159), Y (0-99), V(2) RETURNS COLOR OR -1 FOR OUT OF RANGE.
  261. 4  = DRAW A LINE.
  262.     X1,      Y1,        X2,       Y2,      COLOR,      0=WHOLE LINE,
  263.                          OTHER FOR PARTIAL LINE.
  264. 5  = DRAW A BOX.
  265.     X1,      Y1,        X2,       Y2,      COLOR.
  266. 6  = DRAW A CIRCLE.  ASPECT RATION OF 5/6= CIRCLE, OTHER= ELLIPSE.
  267.     X,      Y,        RADIUS,   ASPECT RATIO 1,2, COLOR.
  268.                      1 = NUMERATOR, 2 = DENOMINATOR
  269. 7  = PRINT LETTER 1.
  270.     ROW (0-11),COL (0-19),ASCII CHAR.,COLOR.
  271. 8  = PRINT LETTER 2.
  272.     ROW (0-11),COL (0-19),ASCII CHAR.,COLOR FGND, COLOR BKGRND.
  273. 9  = PRINT A STRING.
  274.     ROW (0-11),COL (0-19),VARPTR(MESSAGE$),COLOR.
  275.     ROW AND COL COME BACK POINTING TO THE NEXT SCREEN POSITION.
  276.     CARRIAGE RETURN AND BACKSPACE HANDLED CORRECTLY.
  277.     SCREEN WILL SCROLL AT BOTTOM LINE.
  278.     COLOR USES ROUTINE 7 ABOVE FOR JUST A COLOR, OR 8 IF COLOR IS
  279.     ENTERED AS SAY &H17 FOR WHITE ON BLUE BACKGROUND.
  280. 10  = NOT USED AT THIS TIME. SIMPLY RETURNS.
  281. 11  = SINE FUNCTION.
  282.     ANGLE IN DEGREES, SIN*10000 RETURNED.(IN V(1))
  283. 12  = COSINE FUNCTION.
  284.     ANGLE IN DEGREES, COS*10000 RETURNED.(IN V(1))
  285. 13  = RANDOM NUMBER FUNCTION.
  286.     0 TO RANDOMIZE, OTHER RETURNS 1 TO X IN V(1).
  287. 14  = RESTORE SCREEN.
  288.     NO VALUES NEEDED. RETURNS COLOR SCREEN TO MODE AT INITIALIZATION
  289.     IF CURRENT SCREEN WAS COLOR.  IF ON MONOCHROME MONITOR, NOTHING.
  290. 15  = MODE FUNCTION.
  291.     RETURNS -1 IN V(0) IF LORES IS ACTIVE, OTHERWISE IBM VIDEO MODE.
  292. 16  = PAINT.
  293.     X (0-159), Y (0-99), FILL COLOR, BOUNDARY COLOR.
  294.  
  295. -----------------------------------------------------------------------
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.           LORES INTERFACE ROUTINES - 3/14/84  - PAGE 5
  304.  
  305.  
  306.  
  307. MONITORS:
  308.  
  309. IF YOU HAVE BOTH A MONOCHROME MONITOR AND COLOR BOARD, YOU CAN DEVELOP
  310. YOUR PROGRAMS ENTIRELY ON THE MONOCHROME MONITOR, DISPLAYING ON COLOR.
  311. THIS IS AN ADVANTAGE OF BEING A NON-STANDARD SET-UP.  SINCE THERE IS NO
  312. 'OFFICIAL' SET-UP, THE COLOR CARD AND ITS MEMORY IS ACCESSED DIRECTLY.
  313.  
  314. WORKING ON A COLOR MONITOR ALONE YOU SHOULD SET UP A SUBROUTINE USING
  315. THE RESTORE SCREEN FUNCTION, NUMBER 14.  YOU DO THIS BY:
  316.  
  317. 400    ' RESTORE COLOR SCREEN.
  318.     DEF SEG=LOSEG% ' LOSEG% IS THE SEGMENT YOU BLOADED LORES.
  319.     CALL LORES%(14,DUMMYARRAYVALUE%) ' LORES% IS ALWAYS ZERO
  320.     DEF SEG        ' DUMMYETC NEEDED, BUT NOT USED.
  321.     RETURN
  322.  
  323. ASSIGN THE LINE NUMBER OF THIS ROUTINE TO A FUNCTION KEY WHILE YOU ARE
  324. WORKING ON A PROGRAM AND YOU WILL BE ABLE TO SEE WHAT YOU ARE TYPING
  325. AGAIN. FOR EXAMPLE:
  326.  
  327.     KEY 7,"GOSUB 400"+CHR$(13)
  328.  
  329. WOULD ASSIGN FUNCTION KEY 7 TO RESTORE A LORES SCREEN IN COMMAND MODE.
  330.  
  331. PAINTING:
  332.  
  333. ONE OF THE NIFTY FEATURES OF LORES IS THE PAINT ROUTINE.  THIS WORKS
  334. VIRTUALLY IDENTICALLY TO THE PAINT FUNCTION IN BASICA, EXCEPT OF COURSE
  335. WITH MANY MORE COLOR CHOICES.  IT ALSO HAS THE SAME APPETITE FOR STACK
  336. SPACE AS THE BASIC FUNCTION.  UNLESS YOU INTEND TO DO NO PAINTING AT
  337. ALL, OR WILL ONLY FILL SMALL EVENLY DEFINED SHAPES, OR WILL NEVER MAKE A
  338. MISTAKE AND SPECIFY THE WRONG COLOR YOU SHOULD SET ASIDE SOME EXTRA
  339. STACK SPACE.  YOU DO THIS IN BASIC WITH THE CLEAR COMMAND.  THE FORMAT
  340. OF CLEAR IS:
  341.  
  342.     CLEAR [,WORKSPACE,STACKSPACE]
  343.  
  344. I HAD CONVINCED MYSELF THAT 2048 BYTES STACK WAS PLENTY UNTIL I MADE A
  345. DESIGN THAT OVERRAN EVEN THIS.    I STILL THINK 2048 BYTES IS A GOOD
  346. AMOUNT TO RESERVE, ESPECIALLY IF YOU ARE PRETTY SURE IN ADVANCE OF WHAT
  347. WILL BE PAINTED.  THE FREE FORM DRAWING ROUTINE IN LODEMO ALLOWS YOU TO
  348. CREATE SOME FAIRLY ELABORATE DESIGNS RELATIVELY QUICKLY, AND THIS IS WHY
  349. 4096 BYTES IS SET ASIDE FOR STACK.  NO DESIGN I HAVE COME UP WITH SINCE
  350. HAS COME CLOSE TO OVERRUNNING THIS AMOUNT OF STACK.  SO:
  351.  
  352.     CLEAR ,,4096 ' WILL SET ASIDE 4096 BYTES FOR BASIC'S STACK.
  353.  
  354. IF YOU ARE RUNNING LODEMO AND DON'T HEAR THE BEEP WHEN YOU HIT ALT-P IN
  355. THE FREE FORM SECTION YOU HAVE OVERFLOWED THE STACK.  THE PROGRAM IS
  356. STILL ALIVE, THOUGH.  WHAT HAPPENS IS THE STACK OVERWRITES THE TOP
  357. STRING VALUES, WHICH IN THIS CASE IS THE STRING FOR ALT-P AND SOME OF
  358. THE SAVED FUNCTION KEY STRINGS.  HITTING <ESCAPE> WILL ALLOW YOU TO
  359. CONTINUE, BUT DON'T TRY TO SAVE THE PROGRAM.
  360.  
  361.  
  362.  
  363.  
  364.           LORES INTERFACE ROUTINES - 3/14/84  - PAGE 6
  365.  
  366.  
  367.  
  368. RANDOM COMMENTS, THANKS, OFFICIAL STUFF:
  369.  
  370. LORES COLOR MODE ROUTINES RESULTED FROM A CURIOSITY ON MY PART TO SEE
  371. WHAT COULD BE DONE WITH THIS MODE OF OPERATION ON MY IBM PC.  MEDIUM
  372. RESOLUTION COLOR IS NICE, BUT I WAS ALWAYS FRUSTRATED AT HAVING SIXTEEN
  373. COLORS IN THE MACHINE AND ONLY THOSE TWO, THREE COLOR PALETTES TO WORK
  374. WITH. I DOUBT IF LORES COLOR WILL CATCH ON, ESPECIALLY SINCE THE IDEAL
  375. APPLICATION IS GAMES, AND GAME PROGRAMS HAVE TO WORK ON TV'S AND NTSC
  376. MONITORS, WHICH IS LORES'S SHORTCOMING.
  377.  
  378. LORES IS FUN TO PLAY WITH, AND THE FREE-FORM DRAWING ROUTINE IN THE
  379. LODEMO PROGRAM HAS RESULTED IN A LOT OF TIME OUT FROM PROGRAM
  380. DEVELOPMENT ON MY PART.  ORIGINALLY LODEMO WAS JUST A FEATURE BY
  381. FEATURE DEMONSTRATION OF THE LORES ROUTINES.  THEN I THOUGHT, WHAT
  382. BETTER WAY TO TEST THE ROUTINES THAN A FREE FORM DRAWING SECTION, THIS
  383. WAY I COULD TEST THE ROUTINES TO DEATH AND SEE WHAT HAPPENED IN ODDBALL
  384. SITUATIONS.  THE PAINT FUNCTION RESULTED FROM THIS SECTION, I JUST HAD
  385. TO HAVE IT IN THERE.  HINT: TO GO STRAIGHT TO THIS SECTION, TYPE A
  386. LOWERCASE 'P' DURING THE FIRST DEMO.
  387.  
  388. IT IS HARD TO CRAM A LOT OF INFORMATION ON A LORES SCREEN, SO HERE'S
  389. ANOTHER FEATURE NOT MENTIONED: ALT-X F(X) WILL XOR THE FREE-FORM SCREEN.
  390. IN ADDITION TO CONTROLLING THE AMOUNT THE CURSOR DOT JUMPS EACH TIME YOU
  391. HIT A CURSOR KEY WITH THE + AND - KEYS, YOU CAN ALSO TYPE A NUMBER
  392. BETWEEN 1 AND 9. THE PLAYTIME FREE FORM SECTION IS IN NO WAY MEANT TO BE
  393. A COMPLETE GRAPHICS DRAWING UTILITY, BUT IT MIGHT BE NICE TO IMPLEMENT
  394. SAVE AND LOAD FUNCTIONS TO DISK, OR PRINTER ROUTINES.  I WOULD LOVE TO
  395. HEAR FROM ANYONE WHO FINDS IT DOING BAD THINGS, OR HAS ADDED AN INTER-
  396. ESTING FEATURE, JUST DON'T TELL ME YOU PAINTED THE WHOLE SCREEN RED WHEN
  397. YOU MEANT BLUE.
  398.  
  399. I HAVE TO THANK DR. DOBBS MAGAZINE, AND RAY DUNCAN'S COLUMN FOR SOME OF
  400. THE ROUTINES, LIKE LINE, CIRCLE AND THE TRIG. FUNCTIONS. ALSO DR. DOBBS
  401. WAS THE FIRST PLACE I SAW AN EXPLANATION OF HOW LORES WORKS.
  402.  
  403. IBM IS A TRADEMARK OF INTERNATIONAL BUSINESS MACHINES CORPORATION.
  404. DOS, BASIC, BASICA, LINK AND BASCOM REFER TO COPYRIGHTED PROGRAMS
  405. BELONGING TO IBM AND MICROSOFT CORPORATION.
  406.  
  407. LORES INTERFACE ROUTINES ARE A COMPILATION/CREATION BY:
  408. MARTY SMITH        COMPUSERVE 72155,1214
  409. 310 CINNAMON OAK LANE
  410. HOUSTON, TEXAS    77079
  411. (713) 661-1241 [DAYS]
  412. (713) 464-6737 [NIGHTS]
  413.  
  414. IF YOU HAVE PROBLEMS GETTING LORES TO WORK FOR YOU, SEND OR CALL THESE
  415. PROBLEMS TO ME AT THE ADDRESS/NUMBER ABOVE. I WILL TRY TO HELP.
  416.  
  417. **HAVE FUN WITH LORES!**
  418.  
  419.  
  420.  
  421.  
  422.  
  423.           LORES INTERFACE ROUTINES - 3/14/84  - PAGE 7
  424.